Upon initiating an I/O (i.e., input/output) transfer, a software application or a device driver may allocate memory resources for use during the transfer. An example of such an allocation is the generation of a scatter-gather list (i.e., SGL) that includes address-length (i.e., A/L) buffer pairs.
Unfortunately, the structure and usage of e.g., SGLs tend to be rigid, resulting in inefficient use of memory resources. For example, often the minimum memory resource allocation unit is an SGL segment, which typically defines a plurality of A/L buffer pairs. Therefore, for even small I/O transfers, an entire SGL segment may be utilized. Accordingly, for small I/O transfers that require less than all of the memory buffers for an SGL segment (or for I/O transfers that do not end on an SGL segment boundary), a considerable amount of unused buffer space may be wasted.
Although the following Detailed Description will proceed with reference being made to illustrative embodiments, many alternatives, modifications, and variations thereof will be apparent to those skilled in the art. Accordingly, it is intended that the claimed subject matter be viewed broadly, and be defined only as set forth in the accompanying claims